home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
MEDICAL
/
2608A.ZIP
/
GP.ZIP
/
PATIENT.SRC
< prev
next >
Wrap
Text File
|
1990-11-03
|
22KB
|
1,104 lines
;\|
;PATIENT.SRC Translated from PATIENT.EDT by Roger Mathew's EDT2SRC Ver 4.11
;PATIENT 12:32:31 PM 17/ 6/90 |
FIELDS:
define(AOD|A|1||10)
define(MN|A|30||10)
define(DO|A|8||10)
define(QU|A|10||10)
define(DS|A|30||10)
define(QTY|N|3||10)
define(ISN|N|3||10)
define(CTR|N|2||)
define(MEM_RPD|S|8||10)
define(CTR2|N|2||)
define(S1|A|1||)
define(RP_POS|A|4||)
define(DATNUM|N|7||)
define(MEM_RPND|S|8||)
define(CTRDAT|N|2||)
define(NEXT|A|1||)
define(OFF|A|4||)
define(LIST_SIZE|N|8||)
define(B8|A|8||)
define(N5.2|N|5|2|)
define(N5|N|5||)
define(A5|A|5||)
define(AGE|N|5|2|)
define(TD|S|8||)
define(REC.NUM|N|8|0|)
define(DATERP|S|8||)
define(PUNC1|N|2|0|)
define(TM|A|27||12)
define(P.2.0.2|N|2|0|)
define(CHOICE|N|2|0|)
define(YES.NO|A|1||)
define(AB|A|5||)
define(CODCTR|N|1||)
define(A1|A|2||)
define(DATCTR|A|2||)
define(PATCTR|N|4|0|)
define(A30|A|30||)
define(B30|A|30||)
define(B8|A|8||)
define(A8|A|8||)
define(YN|A|1||)
define(DAY|A|2||)
define(TD1|A|8||)
define(RECPOS|A|4||)
define(LAST_ERROR|N|2||)
define(XCNTR|N|3||)
define(POR|A|5||)
define(DUMMY|A|5||)
define(DUMMY2|A|30||)
define(FLAG|A|1||)
define(YCNTR|N|3||)
define(XCNTR6|N|3||)
define(XCNTR1|N|3||)
define(XCNTR2|N|3||)
define(XCNTR3|N|3||)
define(XCNTR4|N|3||)
define(MENU.HLDR|A|47||13)
define(XCNTR5|N|3||)
date(TD|G)
trap(6|S|TRACE)
trap(5|S|SIX)
open(PATIENT||1|EXIT2)
open(RP||1|EXIT2)
open(RECALLS||0|EXIT2)
open(IMDATE||0|EXIT2)
open(PAEDS||0|EXIT2)
open(DIABETIC||0|EXIT2)
open(ABBREV||0|EXIT2)
open(RPABBREV||0|EXIT2)
open(GPSETUP||0|EXIT2)
open(PROCEDE||0|EXIT2)
open(MEMORY||0|)
trap(L|I)
find(E|RECORD.NUMBER|EXIT|N)
find(B|HEADING|EXIT2|)
REC.NUM = (RECORD.NUMBER)
clr(PATIENT|B)
;BEGINNING OF AGE SEX REGISTER|
PATIENT:
mount(PATIENT|S)
PAT.NAME:
LIST_SIZE =nrc(PATIENT)
gosub PAT.TRAP
AGE = (0)
clrlne(1|25)
enter(PATIENT.NAME|" ABCDEFGHIJKLMNOPQRSTUVWXYZ,'-"||CLEARPAT|Y|Y|N|||N)
PUNC1 =loc(","|PATIENT.NAME|1||14)
P.2.0.2 = (PUNC1+1)
if PUNC1 = (0) reent
S1 =mid(PATIENT.NAME|P.2.0.2|1|)
if S1 <> ("") reent
PUNC1 = (0)
P.2.0.2 = (0)
S1 = ("")
ifdup(PATIENT.NAME|S|DUP.NAME)
gosub CHECK
RESS:
enter(ADDRESS1||||Y|Y|N|||N)
lnum(PATCTR)
S1 =mid(ADDRESS1|1|1|)
if S1 = ("@") do
{
AB = (ADDRESS1)
gosub LETABV
AB = ("")
ADDRESS1 = (ABBREV.NAME)
gosub CLRABV
goto RESS
}
AREA:
enter(AREA||||Y|Y|N|||N)
lnum(PATCTR)
S1 =mid(AREA|1|1|)
if S1 = ("@") do
{
AB = (AREA)
gosub LETABV
AB = ("")
AREA = (ABBREV.NAME)
gosub CLRABV
}
enter(POSTCODE||||Y|Y|N|||N)
enter(DATE.OF.BIRTH||||N|Y|N|||N)
if DATE.OF.BIRTH > (TD) reent
if DATE.OF.BIRTH < (TD-36500) reent
N5.2 = (TD-DATE.OF.BIRTH/365)
AGE = (N5.2)
SEX:
enter(MARITAL.STATUS|"MS"|||Y|Y|N|||N)
enter(SEX|"MF"|||Y|Y|N|||N)
enter(DISPENSING|"YNX"|||Y|Y|N|||N)
enter(DOCTOR|"1234"|||N|Y|N|||N)
enter(NHS.NUM||||Y|Y|N|||N)
enter(PAT.REG||||N|Y|N|||N)
enter(pat_flag|" Y"|||y|y|n|||n)
enter(NOTES.REC||||N|Y|N|||N)
enter(TELEPHONE||||N|N|N|||N)
enter(SEEN||||N|Y|N|||N)
if DATE_SEEN > (SEEN) do
{
SEEN = (DATE_SEEN)
}
else
{
DATE_SEEN = (SEEN)
}
enter(SMOKER|" Y"|VIS_HELP||Y|Y|N|||N)
enter(VISIT|" YSV"|75_HELP||Y|Y|N|||N)
SAVE.PAT:
gosub TRAPS
trap(O|G|FILE_ERROR)
LAST.UPDATE = (TD)
if RECORD.NUMBER > (0) goto SAVE.PATX
RECORD.NUMBER = (REC.NUM+1)
SAVE.PPPX:
save(PATIENT|Y|Y|PAT.NAME)
SAVE.QQQX:
REC.NUM = (REC.NUM+1)
trap(O|D)
goto PAT.NAME
SAVE.PATX:
save(PATIENT|Y|Y|PAT.NAME)
goto PAT.NAME
DELETE:
trap(L|G|DEL.LOCK)
pmsg(@R;"Delete all records relating to this patient -Y/N ?"|1|25|N|N|S|YES.NO)
clrlne(1|25)
if YES.NO <> ("Y") goto PAT.NAME
DLT.RP:
RP.REF = (RECORD.NUMBER)
find(M|RP.REF|DEL.CODE|)
del(RP|N)
goto DLT.RP
DEL.CODE:
COD.REF = (RECORD.NUMBER)
find(M|COD.REF|DEL_IM|)
del(RECALLS|N)
DEL_IM:
IMDATE.COD = (RECORD.NUMBER)
find(M|IMDATE.COD|DEL_P|)
del(IMDATE|N)
DEL_P:
P_COD = (RECORD.NUMBER)
find(M|P_COD|DEL_DIAB|)
del(PAEDS|N)
DEL_DIAB:
DIAB_REF = (RECORD.NUMBER)
find(M|DIAB_REF|DEL_PROC|)
del(DIABETIC|N)
DEL_PROC:
PROC_REF = (RECORD.NUMBER)
find(M|PROC_REF|DLT.PAT|)
del(PROCEDE|N)
DLT.PAT:
del(PATIENT|N)
trap(L|G|PAT.LOCK)
goto PAT.NAME
DUP.NAME:
if RECORD.NUMBER > (0) goto RETDUP
bell
pmsg(@R;"This name is already on file!"|1|25|Y|N|S|)
clrlne(1|25)
clr(PATIENT|B)
RETDUP:
ret
;HERE ARE THE RP ENTRY PROCEDURES.|
RP:
mount(RP|S)
RP.NAME:
RP.PATX:
clr(RP|B)
gosub PAT.TRAP
trap(T|I)
trap(J|G|PATIENT)
trap(S|I)
trap(L|G|PAT.LOCKRP)
trap(D|I)
trap(C|G|CLRPS)
clrlne(1|25)
enter(PATIENT.NAME|||CLRPS|Y|N|N|||N)
RP.RETURN:
find(G|PATIENT.NAME|RP.NAME)
gosub CHECK
RECPOS =rcn(PATIENT|G)
if DISPENSING = ("X") do
{
gosub TRAPS
trap(Q|I)
saves(1)
rev
window(19|13|2|32)
UPTRAP:
pmsg("DISPENSING = X CHANGE IT NOW!"|1|1|N|N|S|)
enter(DISPENSING|"YNX"||UPTRAP|Y|Y|N|30|1|N)
save(PATIENT|N|N)
find(M|RECORD.NUMBER|RP|)
frg
redsp(1)
trap(Q|G|EXIT)
if DISPENSING = ("X") goto RP.NAME
gosub PAT.TRAP
}
RP.REF = (RECORD.NUMBER)
MEM_RPND = (0)
find(M|RP.REF|AD_RP|)
AD_RP:
gosub RP.TRAP
enter(AUTO.ON.DEMAND|"AD"||RP.PATX|Y|Y|N|||N)
YN = (AUTO.ON.DEMAND)
if CONTROL = ("N") goto AD2
enter(ISS.RESTRICT|"YN"|||Y|Y|N|||N)
if ISS.RESTRICT = ("N") goto AD2
enter(HOW.MANY.ISSUES||||N|N|N|||N)
RESTRICT.NO = (HOW.MANY.ISSUES-ISSUE.NO)
AD2:
if MEDICATION > (" ") goto RESTRICT
RP.FIRST = (MEM_RPND)
enter(RP.FIRST||||N|Y|N|||N)
DATERP = (RP.FIRST)
if RP.FIRST < (TD-28) reent
if RP.FIRST > (TD+56) reent
REVIEW.RP = (RP.FIRST+187)
RP.DAYS.SUPPLY = (28)
RP.NEXT.DUE = (RP.FIRST+RP.DAYS.SUPPLY)
if MEDICATION = (" ") goto RESTRICT
enter(ISSUE.1||||N|Y|N|||N)
enter(RP.NEXT.DUE||||N|Y|N|||N)
RESTRICT:
trap(R|S|REL_RP)
enter(MEDICATION||||Y|Y|N|||N)
lnum(PATCTR)
YN = (AUTO.ON.DEMAND)
DATERP = (RP.FIRST)
AB = (MEDICATION)
S1 =mid(MEDICATION|1|1|)
FLAG = ("A")
if S1 <> ("@") goto PATMENU
if S1 = ("@") do
{
trap(U|I)
trap(W|I)
trap(J|I)
trap(1|I)
FLAG = ("A")
AB = (MEDICATION)
gosub LETRPABV
AB = ("")
MEDICATION = (RPABBREV.NAME)
RPWARNING = (WARNING)
trap(U|D)
gosub CLRABV
}
LIST_DRUG:
enter(DOSE||||Y|Y|N|||N)
enter(QUANTITY||||N|Y|N|||N)
enter(DIRECTIONS||||Y|Y|N|||N)
S1 =mid(DIRECTIONS|1|1|)
lnum(PATCTR)
FLAG = ("B")
AB = (DIRECTIONS)
if S1 <> ("@") goto PATMENU
if S1 = ("@") do
{
trap(U|I)
trap(W|I)
trap(J|I)
trap(1|I)
FLAG = ("B")
AB = (DIRECTIONS)
gosub LETRPABV
AB = ("")
DIRECTIONS = (RPABBREV.NAME)
gosub CLRABV
}
DIR_FIND:
QTY:
enter(RP.DISP.QTY||||N|Y|N|||N)
enter(RP.WHAT.DISP||||Y|Y|N|||N)
SAVE.RP:
gosub TRAPS
RECPOS =rcn(PATIENT|S)
RP.REF = (RECORD.NUMBER)
if RP.REF = (0) goto RP.NAME
AUTO.ON.DEMAND = (YN)
RP.FIRST = (DATERP)
save(RP|Y|Y|RP.NAME)
goto AD_RP
RP.RELATES:
if RP.REF = (0) goto RTN
if NEXT = ("N") do
{
NEXT = ("")
find(N|RP|RTN|)
}
else
{
if NEXT = ("P") do
{
NEXT = ("")
find(P|RP|RTN|)
}
}
OFF =rcn(RP|G)
RECORD.NUMBER = (RP.REF)
find(M|RECORD.NUMBER|RTN|N)
RECPOS =rcn(PATIENT|G)
OFF =rcn(RP|S)
RTN:
ret
DELETE.RP:
YES.NO = ("Y")
pmsg("DELETE Y/N:"|1|24|Y|N|S|YES.NO)
clrlne(1|24)
if YES.NO <> ("Y") goto AD_RP
del(RP|N)
goto AD_RP
AD_RPX:
goto AD_RP
AGE.REL:
N5.2 = (TD-DATE.OF.BIRTH/365)
AGE = (N5.2)
ret
CLEARPAT:
clr(PATIENT|B)
AGE = (" ")
goto PAT.NAME
CLEARRP:
if AUTO.ON.DEMAND = ("A") then MEM_RPND = (RP.NEXT.DUE-28)
clr(RP|B)
goto AD_RP
CLRPS:
clr(PATIENT|B)
clr(RP|B)
AGE = ("")
goto RP.NAME
;HERE ARE THE RP PRINTING ROUTINES|
CODE:
trap(1|I)
COD.NAME:
COD.PATX:
gosub PAT.TRAP
trap(1|I)
trap(S|I)
trap(C|G|CLCODS)
trap(L|G|PAT.LOCKCO)
trap(D|I)
clrlne(1|25)
clr(RECALLS|B)
enter(PATIENT.NAME|||CLCODS|Y|N|N|||N)
COD.RETURN:
find(G|PATIENT.NAME|COD.NAME)
gosub CHECK
COD.REF = (RECORD.NUMBER)
find(M|COD.REF|CCDA|)
CCDA:
gosub COD.TRAP
trap(S|I)
CODCTR = (0)
CD2:
for(CODCTR|1|9|1)
{
enter(COD[CODCTR]|||COD.NAME|Y|Y|N|||N)
if COD.D[CODCTR] < (2415490) then COD.D[CODCTR] = (1721439+CODCTR)
CTRDAT = (14+CODCTR)
DATCTR = (CTRDAT)
enter(COD.D[CODCTR]|||COD.NAME|N|Y|N|||N)
A1 =mid(COD.D[CODCTR]|1|2|)
DATNUM = (COD.D[CODCTR])
if DATNUM <= (2415440) do
{
COD[CODCTR] = ("")
COD.D[CODCTR] = (0)
if CODCTR = (9) goto SAVE.COD
}
else
{
if A1 <> (DATCTR) reent
}
}
trap(S|G|SAVE.COD)
SAVE.COD:
COD.REF = (RECORD.NUMBER)
COD.PAT.NAME = (PATIENT.NAME)
save(RECALLS|Y|N|CCDA)
find(M|COD.REF||)
goto CCDA
DELETE.COD:
del(RECALLS|Y|)
goto COD.RETURN
CLEARCOD:
clr(RECALLS|B)
goto CCDA
CLCODS:
clr(PATIENT|B)
clr(RECALLS|B)
AGE = ("")
goto COD.NAME
COD.TRAP:
trap(7|I)
trap(9|I)
trap(J|G|PATIENT)
trap(S|G|SAVE.COD)
trap(C|G|CLEARCOD)
trap(D|I)
trap(N|I)
trap(M|I)
trap(F|I)
trap(B|I)
trap(G|I)
trap(R|I)
trap(U|D)
trap(L|G|COD.LOCK)
ret
REL.COD:
RECORD.NUMBER = (COD.REF)
find(M|RECORD.NUMBER|CODRETT|)
CODRETT:
ret
TRAPS:
trap(Q|G|EXIT)
trap(3|I)
trap(S|I)
trap(D|I)
trap(T|I)
trap(L|D)
trap(R|I)
trap(F|I)
trap(N|I)
trap(M|I)
trap(B|I)
trap(G|I)
trap(C|I)
trap(J|I)
trap(U|D)
trap(W|D)
trap(1|I)
ret
CLEARALL:
clr(PATIENT|B)
clr(RP|B)
ret
FIELDCLR:
S1 = ("")
AGE = (0)
AB = ("")
PATCTR = (0)
A30 = ("")
B30 = ("")
A8 = ("")
B8 = ("")
N5 = (0)
ret
PAT.TRAP:
trap(1|I)
trap(O|D)
trap(T|G|SEEALL)
trap(J|G|RP)
trap(S|I)
trap(R|S|AGE.REL)
trap(F|D)
trap(N|D)
trap(M|D)
trap(B|D)
trap(G|D)
trap(C|G|CLEARPAT)
trap(D|G|DELETE)
trap(Q|G|EXIT)
trap(3|I)
trap(U|D)
trap(L|G|PAT.LOCK)
ret
RP.TRAP:
trap(J|G|PATIENT)
trap(T|I)
trap(L|G|RP.LOCK)
trap(S|G|SAVE.RP)
trap(C|G|CLEARRP)
trap(D|G|DELETE.RP)
trap(N|S|NEXT)
trap(M|S|PREV)
trap(F|D)
trap(B|D)
trap(G|D)
trap(R|I)
trap(U|D)
trap(3|I)
ret
NEXT:
NEXT = ("N")
gosub RP.RELATES
ret
PREV:
NEXT = ("P")
gosub RP.RELATES
ret
RP.EXIT:
gosub TRAPS
goto EXIT
LETABV:
ABBREVIATION = (AB)
find(M|ABBREVIATION|GET.ABBREV)
goto RET
GET.ABBREV:
gosub LETTRAP
saves(1)
trap(Q|I)
window(10|14|5|60)
pmsg("ABBREVIATION :";ABBREVIATION|1|2|N|N|S|)
pmsg("ENTER ABBREV.NAME:"|1|4|N|N|S|ABBREV.NAME)
if ABBREV.NAME = ("") goto NOABV
save(ABBREV|N|N|GET.ABBREV)
find(M|ABBREVIATION||)
NOABV:
redsp(1)
trap(Q|G|EXIT)
gosub FINDLINE
RET:
ret
LETRPABV:
RPABBREVIATION = (AB)
find(M|RPABBREVIATION|GET.RPABBR)
gosub FIND_DRCD
goto RETT
GET.RPABBR:
gosub LETTRAP
YES.NO = ("")
if FLAG <> ("X") do
{
RPABBREVIATION = (AB)
saves(2)
trap(Q|I)
window(10|16|8|60)
pmsg("ABBREVIATION:";RPABBREVIATION|1|2|N|N|S|)
pmsg("ENTER RPABBREV.NAME:"|1|4|N|N|S|RPABBREV.NAME)
if RPABBREV.NAME = ("") goto NORPABV
pmsg("ENTER WARNING:"|1|6|N|N|S|WARNING)
pmsg("ENTER DRUGCODE:"|1|7|N|N|S|DRUGCODE)
save(RPABBREV|N|N|GET.RPABBR)
find(M|RPABBREV.NAME||)
NORPABV:
redsp(2)
}
PATMENRET:
trap(Q|G|EXIT)
gosub FIND_DRCD
gosub FINDLINE
clrlne(1|24)
RETT:
ret
CLRABV:
clr(ABBREV|B)
clr(RPABBREV|B)
ret
LETTRAP:
trap(D|I)
trap(B|I)
trap(G|I)
trap(F|I)
trap(R|I)
trap(N|I)
trap(M|I)
trap(J|I)
trap(U|I)
trap(W|I)
trap(C|I)
trap(S|I)
trap(I|D)
ret
FINDLINE:
if PATCTR < (98) then gosub PAT.TRAP
if PATCTR => (98) do
{
if PATCTR <= (202) then gosub RP.TRAP
}
else
{
if PATCTR > (202) then gosub TRAPS
}
ret
MENU:
TM[1] = (" 1 - AGE-SEX/REC 01011")
TM[2] = (" 2 - MEMO ENTRY 01022")
TM[3] = (" 3 - EXIT 01033")
menu(30|20|4|23|0|TM|CHOICE|3|22|MENU||"-------GP MENU--------"|N)
on(CHOICE|G|PAT_ENT;MEMO;EXIT3|MENU)
PAT_ENT:
run("PATREC")
MEMO:
find(B|MEM_NAME|MEM_EXIT|)
MEM_NAME = (PATIENT.NAME)
MEM_EXIT:
save(MEMORY|N|Y)
run("MEMO")
TRACE:
break
ret
EXIT:
goto MENU
EXIT2:
pmsg("FILE LOCKED BY ANOTHER STATION"|10|24|Y|N|S|)
clrlne(1|24)
run("recmenu")
RELATED:
RP_POS =rcn(RP|G)
RECORD.NUMBER = (RP.REF)
find(M|RECORD.NUMBER|RELRET|N)
RP_POS =rcn(RP|S)
RELRET:
ret
FIND_DRCD:
COD.REF = (RECORD.NUMBER)
find(M|COD.REF|NEWCODG|)
NEWCODG:
COD.REF = (RECORD.NUMBER)
COD.PAT.NAME = (PATIENT.NAME)
if DRUGCODE = (0) do
{
COD.D[7] = (RP.FIRST+365)
save(RECALLS|N|Y)
ret
}
if DRUGCODE = (9) then COD.D[DRUGCODE] = (TD+182)
if DRUGCODE = (5) then COD.D[DRUGCODE] = (TD+365)
if DRUGCODE = (6) then COD.D[DRUGCODE] = (TD+365)
if DRUGCODE = (7) then COD.D[DRUGCODE] = (TD+182)
if DRUGCODE = (8) then COD.D[DRUGCODE] = (TD+365)
if DRUGCODE = (9) then COD.D[DRUGCODE] = (TD+182)
if DRUGCODE = (4) do
{
COD[DRUGCODE] = ("ORAL")
COD.D[DRUGCODE] = (TD+182)
}
if DRUGCODE = (2) do
{
DRUGCODE = (DRUGCODE+2)
COD[DRUGCODE] = ("INS")
COD.D[DRUGCODE] = (TD+182)
}
save(RECALLS|N|Y)
ret
PAT.LOCK:
pmsg("RECORD IN USE - PRESS RETURN AND TRY AGAIN LATER"|10|24|Y|N|S|)
clr(PATIENT|B)
clrlne(1|24)
goto PAT.NAME
PAT.LOCKRP:
pmsg("RECORD IN USE - PRESS RETURN AND TRY AGAIN LATER"|10|24|Y|N|S|)
clr(RP|B)
clr(PATIENT|B)
clrlne(1|24)
goto RP.NAME
RP.LOCK:
pmsg("RECORD IN USE - PRESS RETURN AND TRY AGAIN LATER"|10|24|Y|N|S|)
clr(PATIENT|B)
clr(RP|B)
clrlne(1|24)
goto RP.NAME
PAT.LOCKCO:
pmsg("RECORD.IN USE - PRESS RETURN AND TRY AGAIN LATER"|10|24|Y|N|S|)
clr(RECALLS|B)
clr(PATIENT|B)
clrlne(1|24)
goto COD.NAME
COD.LOCK:
pmsg("RECORD IN USE - PRESS RETURN AND TRY AGAIN LATER"|10|24|Y|N|S|)
clr(PATIENT|B)
clr(RECALLS|B)
clrlne(1|24)
goto CCDA
DEL.LOCK:
pmsg("A RECORD IS IN USE FOR THIS PATIENT - TRY AGAIN LATER"|10|24|Y|N|S|)
clr(PATIENT|B)
clr(RP|B)
clr(RECALLS|B)
clrlne(1|24)
goto DELETE
EXIT3:
run("recmenu")
FILE_ERROR:
lferrn(LAST_ERROR)
if LAST_ERROR = (61) do
{
REC.NUM = (REC.NUM+1)
RECORD.NUMBER = (REC.NUM)
save(PATIENT|N|Y)
goto SAVE.QQQX
}
else
{
if LAST_ERROR = (5) do
{
pmsg("DUPLICATE PATIENT NAME - START AGAIN"|20|24|Y|N|S|)
run("PATIENT")
}
else
{
pmsg("last error";LAST_ERROR|40|24|N|N|S|)
goto PAT.NAME
}
}
;|
;|
PATMENU:
trap(%|G|RETNOAB)
MENU.HLDR[1] = (" A - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0101A")
MENU.HLDR[2] = (" B - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0102B")
MENU.HLDR[3] = (" C - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0103C")
MENU.HLDR[4] = (" D - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0104D")
MENU.HLDR[5] = (" E - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0105E")
MENU.HLDR[6] = (" F - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0106F")
MENU.HLDR[7] = (" G - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0107G")
MENU.HLDR[8] = (" H - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0108H")
MENU.HLDR[9] = (" I - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0109I")
MENU.HLDR[10] = (" J - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0110J")
MENU.HLDR[11] = (" K - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0111K")
MENU.HLDR[12] = (" L - xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0112L")
MENU.HLDR[13] = (" M - more 0113M")
RPABBREV.NAME = (AB)
find(G|RPABBREV.NAME|RETRETRET|)
XCNTR6 = (1)
XCNTR = (1)
YCNTR = (1)
XCNTR2 = (0)
FILES.1:
mid(DUMMY|XCNTR|5|RPABBREVIATION|1)
mid(DUMMY2|YCNTR|30|RPABBREV.NAME|2)
XCNTR = (XCNTR + 5)
YCNTR = (YCNTR+30)
XCNTR2 = (XCNTR2 + 1)
FILES.1X:
find(N|RPABBREV|FILES.2|)
XCNTR6 = (1+XCNTR6)
if XCNTR6 > (39) then goto FILES.2
goto FILES.1
FILES.2:
XCNTR = (1)
YCNTR = (1)
FILES.3:
XCNTR1 = (1)
FILES.4:
RPABBREVIATION =mid(DUMMY|XCNTR|5|1)
RPABBREV.NAME =mid(DUMMY2|YCNTR|30|2)
mid(MENU.HLDR[XCNTR1]|6|5|RPABBREVIATION|)
mid(MENU.HLDR[XCNTR1]|12|30|RPABBREV.NAME|)
XCNTR2 = (XCNTR2 - 1)
XCNTR = (XCNTR + 5)
YCNTR = (YCNTR+30)
if XCNTR2 > (0) do
{
if XCNTR1 < (12) do
{
XCNTR1 = (XCNTR1 + 1)
goto FILES.4
}
else
{
XCNTR1 = (XCNTR1 + 1)
goto FILES.5
}
}
FILES.5:
RPABBREVIATION = ("")
RPABBREV.NAME = ("")
XCNTR3 = (XCNTR1 + 1)
XCNTR5 = (1)
menu(12|19|XCNTR3|43|0|MENU.HLDR|XCNTR5|XCNTR1|42|RETNOAB||"RP ABBREVIATIONS"|N)
if XCNTR5 < (13) do
{
if FLAG = ("A") do
{
MEDICATION =mid(MENU.HLDR[XCNTR5]|12|30|)
RPABBREV.NAME = (MEDICATION)
find(M|RPABBREV.NAME|RETNOAB|N)
RPWARNING = (WARNING)
FLAG = ("X")
gosub FIND_DRCD
trap(%|I)
clr(RPABBREV|B)
goto LIST_DRUG
}
else
{
DIRECTIONS =mid(MENU.HLDR[XCNTR5]|12|30|)
FLAG = ("X")
trap(%|I)
clr(RPABBREV|B)
goto DIR_FIND
}
}
goto FILES.3
RETRETRET:
trap(%|I)
clr(RPABBREV|B)
goto LIST_DRUG
RETNOAB:
trap(%|I)
clr(RPABBREV|B)
if FLAG = ("A") then MEDICATION = (AB)
if FLAG = ("B") then DIRECTIONS = (AB)
goto RESTRICT
SIX:
dos("SI")
ret
CHECK:
if PRINTP = ("") ret
if PRINTP => ("1") do
{
saves(1)
window(2|12|2|76)
pmsg("THERE IS A REGISTRATION PROBLEM WITH THIS PATIENT - CHECK CODE ";PRINTP|1|1|Y|N|S|)
redsp(1)
}
ret
REL_RP:
trap(R|D)
if RP.REF = (0) ret
RECORD.NUMBER = (RP.REF)
find(M|RECORD.NUMBER||)
ret
SEEALL:
STARTALL1:
mount(NEW|S)
STARTALL:
if RECORD.NUMBER = (0) goto ENDIT
COD.REF = (RECORD.NUMBER)
find(M|COD.REF|NEXTALL|)
NEXTALL:
IMDATE.COD = (RECORD.NUMBER)
find(M|IMDATE.COD|NEXTALL1|)
NEXTALL1:
P_COD = (RECORD.NUMBER)
find(M|P_COD|NEXTALL2|)
NEXTALL2:
RP.REF = (RECORD.NUMBER)
find(M|RP.REF|ENDIT|)
CTR = (1)
TESTALL:
AOD[CTR] = (AUTO.ON.DEMAND)
MN[CTR] = (MEDICATION)
DO[CTR] = (DOSE)
QU[CTR] = (QUANTITY)
DS[CTR] = (DIRECTIONS)
QTY[CTR] = (RP.DISP.QTY)
ISN[CTR] = (ISSUE.NO)
MEM_RPD[CTR] = (RP.NEXT.DUE)
trim(MN[CTR]|T)
trim(QU[CTR]|T)
just(QU[CTR]|L)
trim(DO[CTR]|T)
just(DO[CTR]|L)
trim(DS[CTR]|T)
just(DS[CTR]|L)
CTR2 = (CTR+9)
pmsg(AOD[CTR];" ";MN[CTR];" ";DO[CTR];" ";QU[CTR];" ";DS[CTR];" ";QTY[CTR];" ";ISN[CTR]|1|CTR2|N|N|S|)
ctr2 = (ctr2)
find(N|RP|ENDIT|)
if RP.REF <> (RECORD.NUMBER) goto ENDIT
CTR = (CTR+1)
goto TESTALL
CLEARXALL:
clr(RP|B)
clr(RECALLS|B)
clr(IMDATE|B)
clr(PAEDS|B)
clrmem(AOD|10)
clrmem(MN|10)
clrmem(MEM_RPD|10)
clrmem(DO|10)
clrmem(QU|10)
clrmem(DS|10)
clrmem(QTY|10)
clrmem(ISN|10)
ret
ENDIT:
enter(PATIENT.NAME||||N|N|N|||N)
gosub CLEARXALL
mount(PATIENT|S)
find(M|RECORD.NUMBER|PAT.NAME|)
goto PAT.NAME
VIS_HELP:
saves(1)
window(1|12|2|78)
pmsg("Enter a Y if there was a NEW patient consultation - blank otherwise"|1|1|Y|N|S|)
redsp(1)
ret
75_HELP:
saves(1)
window(1|12|3|78)
pmsg("Enter a Y if the patient responds to invitation positively ie yes please"|1|1|N|N|S|)
pmsg(" Y,S,V are valid but only use blank or Y - Leave S,V, well alone"|1|2|Y|N||)
redsp(1)
ret
\STPATIENT
AGE-SEX REGISTER AND RP ENTRY
┌───────────────────────────────────────────────────────┐
│ Pat.Name :& < │
│ Address @:& < │
│ Area @:& │
│ Postcode :& │
│ Date.o.b.:& < │
│ Mar/Sing.:& │
│ Sex :& │
│ Disp.? :&<(YNX) │
│ Doctor :& Age :& │
│ NHS No. :& < Sent for 3yr/75+ :& │
│ Pat.reg :& & Replied/Visited :& │
│ Notes.Rec:& Last update :& │
│ Tel :& List Size :& │
│ Seen :& < │
│ New P Exm:& Attended? │
└───────────────────────────────────────────────────────┘
F1 - Help F2 -Rp Tab - Info Esc - menu
\
PATIENT.NAME
ADDRESS1
AREA
POSTCODE
DATE.OF.BIRTH
MARITAL.STATUS
SEX
DISPENSING
DOCTOR
AGE
NHS.NUM
SENT_FOR
PAT.REG
PAT_FLAG
VISIT
NOTES.REC
LAST.UPDATE
TELEPHONE
LIST_SIZE
SEEN
SMOKER
\
\STRP
REPEAT PRESCRIBING
┌─────────────────────────────────────────────────────────────────────────────┐
│ Patient Name:& < Tel :& │
│ Address:& & D.O.B.:& < │
└─────────┬───────────────────────────────────────┬─────────────────┬─────────┘
│ Auto/on demand? A/D :& │Numb.Issued:& │
│ Restrictions? Y/N:&for:& issues.│Numb.to go :& < │
│ Starting.date:& └─────────────────┤
│ Days between issue:& │
│ Last.issue:& │
│ RP.Next.Due:& │
│ Medication @:& < │
│ Warning:& │
│ Strength:& │
│ Dose:& │
│ Directions @:& │
│ Qtity / Type & /& │
└─────────────────────────────────────────────────────────┘
F1 - help @ - use abbreviation Esc - menu
\
PATIENT.NAME
TELEPHONE
ADDRESS1
AREA
DATE.OF.BIRTH
AUTO.ON.DEMAND
ISSUE.NO
ISS.RESTRICT
HOW.MANY.ISSUES
RESTRICT.NO
RP.FIRST
RP.DAYS.SUPPLY
ISSUE.1
RP.NEXT.DUE
MEDICATION
RPWARNING
DOSE
QUANTITY
DIRECTIONS
RP.DISP.QTY
RP.WHAT.DISP
\
\STNEW
& & &
DOB:& M/S:& SEX:& DISP:& DR:& REG:& NOTS:& TEL:&
SEEN:& SENT:& NHS:& LASTUP:&
SMEAR:& :& LAST:& & CONTRA:& :& IMMUN:& :&
DIAB: & :& PAED:& :& THY:& :& RP: & :&
ASTH: & :& BP:& :& PAEDS:& :& :& :&
IMMNS:& :& :& :& :&
ESC - EXIT F3 - CLEAR
\
PATIENT.NAME
ADDRESS1
AREA
DATE.OF.BIRTH
MARITAL.STATUS
SEX
DISPENSING
DOCTOR
PAT.REG
NOTES.REC
TELEPHONE
SEEN
SENT_FOR
NHS.NUM
LAST.UPDATE
COD[1]
COD.D[1]
SM_DATE
WHERE
COD[2]
COD.D[2]
COD[3]
COD.D[3]
COD[4]
COD.D[4]
COD[5]
COD.D[5]
COD[6]
COD.D[6]
COD[7]
COD.D[7]
COD[8]
COD.D[8]
COD[9]
COD.D[9]
PDATE1
PDATE2
PDATE3
PDATE4
IMDATE1
IMDATE2
IMDATE3
IMDATE4
IMDATE5
\